1. Field of the Invention
This invention relates to the field of handheld computers and peripheral device identification. In particular, the present invention relates to managing a communications port of a handheld computer and providing a flexible peripheral device identification system and method that is easily adaptable to identify a variety of peripheral devices.
2. Related Art
As the components required to build a computer system have reduced in size, new categories of computer systems have emerged. One of the new categories of computer systems is the hand held or xe2x80x9cpalmtopxe2x80x9d computer system. A palmtop computer system is a computer that is small enough to be held in the hand of a user and can be xe2x80x9cpalm-sized.xe2x80x9d Most palmtop computer systems are used to implement various Personal Information Management (PIM) applications such as an address book, a daily organizer and electronic notepads, to name a few. Since palmtop computer systems are very small, they are usually limited in the range of functions they perform. It is often beneficial to couple a palm computer with peripheral devices to expand functionality. The greater the variety of peripheral devices a hand held computer is capable of operating with the broader the functionality the palm computer can achieve.
The management of communications port contention and power consumption affect the ease of use and the battery life of handheld computers. A typical handheld computer includes limited communications port resources. For example, the Palm V personal organizer has only one communications port available to interface with peripherals. When the communications port is exclusively occupied by a peripheral, the communications port is unavailable for other uses. For example, a handheld computer with an active keyboard occupying the communications port may be unable to perform an infrared synchronization process with another handheld computer.
Another ease of use issue is the degree of user intervention required to manage a communications port and identify peripheral devices coupled to the communications port. Requiring a user to manually open the communications port and identify a peripheral device coupled, for example through the graphical user interface or the buttons of the handheld computer, may be less preferable to automatically opening the communications port and identifying the peripheral device when the handheld computer receives information from a peripheral device. Further, requiring a user to explicitly close the communications port may be less preferable to automatically closing the communications port after the peripheral device and the handheld computer no longer exchange data. In one existing solution, the handheld computer will automatically close a communications channel, which was opened to work with a keyboard peripheral, when the handheld computer is prompted with a signal prompting a synchronization process, e.g. by a cradle for a HotSync process. However, if a user forgets to explicitly close the communications port after using a keyboard that occupied the communications port, the user may be unable to perform an infrared synchronization process.
At best, the user is delayed with extra steps; at worst, the user may have the mistaken impression that the handheld computer has malfunctioned.
Requiring a user to manually close the communications port also affects power consumption. Battery powered systems, such as handheld computers, are sensitive to applications that drain excessive power. Thus, handheld computers mostly leave their communications ports in a low power standby mode. An open communications channel may consume significant power. For example, the Palm V personal organizer has a communications port included in the processor that is shared between an infrared communications port and an RS-232 serial communications port. The Palm V handheld organizer keeps these ports in standby to reduce power consumption. A user that forgets to close the communications port after a peripheral device is no longer used may suffer a significantly decreased battery life, and be forced to recharge or change batteries often.
Even when a user closes the communications port, the port has to be reopened for further communications with a peripheral device. When the communications port is reopened the attached peripheral device needs to be identified. Identifying the peripheral device permits the hand held computer to open appropriate applications and select appropriate communication protocols. Some traditional hand held computers provided limited peripheral device identification of a cradle or modem by determining a logical value on a legacy peripheral identification pin. For example, in a palm hand held computer, this is traditionally done with two pins on a serial port. In the traditional technique, an interrupt is generated by bringing up one of the pins. An interrupt routine then checks the second pin to determine if it is high or low (high indicates modem, low indicates cradle). The problem with this technique is that it only allows two different types of devices to wake the serial port. The traditional peripheral device identification is limited to identifying one of two devices, a cradle or modem. As hand held computer technology and applications advance a greater number of peripheral devices are coupled to the hand held computers but are not identifiable by traditional hand held computers.
Accordingly, what is needed is hand held computer peripheral device identification system and method that facilitates extendible identification of various peripheral devices.
Various embodiments of the invention provide an improved method and apparatus for managing communications port contention and power consumption for a handheld computer, in particular those with a communications protocol that boosts power consumption when active, such as RS-232. The improved method provides communications channel management that automatically closes the communications channel. A communications channel includes interfaces coupling a peripheral with the handheld computer, and the communication port, which may be included in the processor of the handheld computer or in an external device.
If the user of the handheld computer is finished using a peripheral utilizing the communications channel, yet forgets to manually close the communications channel, or fails to send a wake-up signal to the handheld computer, e.g., for a synchronization process such as a HotSync process, the communications channel still automatically closes. Limited communications channel resources are thereby made available, and power is conserved which would otherwise be squandered by maintaining a power hungry communications protocol that is not being used. The wake-up signal is part of a signal sent to a handheld computer to initiate a synchronization process for communicating data between the handheld computer and another computer. The wake-up signal also includes signals sent by non-cradle peripherals for initiating a communication of data with the handheld computer. The wake-up signal may cause the handheld computer to change from a lower power state to a higher power state.
In one embodiment, the handheld computer can be detachably coupled to a computer peripheral device via the communications port of the handheld computer. Various computer peripherals include a computer cradle for a synchronization process between the handheld computer and another computer, and other non-cradle peripherals, such as a modem, a keyboard, and a wireless communications device. The handheld computer receives a wake-up signal over the communications port. The wake-up signal may physically travel to the communications port through physical interfaces including a connector and an infrared interface. Responsive to receiving the wake-up signal, the handheld computer turns on, or changes to a high power state from a low power state. A communications channel is opened to the computer peripheral. Then, the computer peripheral is identified. If the computer peripheral is the cradle, then a synchronization function is performed between the handheld computer and another computer. If the computer peripheral is a non-cradle peripheral, then data is communicated with the non-cradle peripheral.
In various embodiments, the computer peripheral device is explicitly and implicitly identified. Identifying the computer peripheral assists the handheld computer in proceeding to the software and hardware functions appropriate for the particular computer peripheral, and in particular, the appropriate communications and power management functions.
In explicit identification, a computer peripheral sends a signal specifically identifying the computer peripheral.
In cases where the computer peripheral device can be limited to two possibilities, for example, a cradle and a non-cradle device such as a keyboard, implicit identification may be appropriate. Following the wake-up signal, the handheld computer waits for a device identification timeout period. If the handheld computer receives no data, then the handheld computer concludes that the cradle device sent the wake-up signal, and the synchronization process continues. If the handheld computer receives data, then the handheld computer concludes that the non-cradle device sent the wake-up signal, and executes a program appropriate for that non-cradle device.
In another embodiment, the handheld computer receives multiple wake-up signals, and identifies the particular computer peripheral from a number of wake-up signals received.
In various embodiments, the opened communications channel is closed in response to receiving some data from the peripheral device, and/or after a device timeout expires without the handheld computer receiving data from the computer peripheral device. If the communications channel can be opened relatively quickly and without consuming much power, the handheld computer may close the communications channel in response to receiving the data which prompted the sending of the wake-up signal. In another embodiment, the handheld computer waits for data until a timeout period ends, and if the handheld computer fails to receive data, or a group of data, from the computer peripheral device before an expiration of the timeout, the communications channel is closed.
Other aspects and advantages of the invention can be seen upon review of the figures, the detailed description, and the claims which follow.
The present invention is a system and method that facilitates extendible identification of various peripheral devices coupled to a hand held computer. In one embodiment of a present invention peripheral device identification system and method, an initial pulse of an interrupt signal received by a hand held computer initiates an interrupt routine that continues to monitor the interrupt signal for additional pulses within a predetermined time. A hand held computer peripheral device identification system and method of the present invention correlates the number of received interrupt signal pulses with the type of peripheral device coupled to the serial port. In one exemplary implementation of the present invention, a hand held computer peripheral device identification detection system and method utilizes a hash table to map the number of pulses to a type of peripheral device. In one embodiment of the present invention, the hand held computer peripheral device identification system and method is backward compatible and capable of identifying legacy peripheral devices such as a cradle or modem.
In one embodiment of the present invention, a hand held computer monitors an interrupt pin that is also subject to a human-triggered pulse. After receiving an initial pulse, which may be human triggered or triggered by mechanics within the peripheral, the hand held computer continues to monitor for sub-pulses that are received within a time period that is too short for a human to create another triggered pulse. The hand held computer counts the number of such pulses to identify a particular peripheral device type.